<?php 
	const X_MARK = "X";
	const Y_MARK = "O";
	const COOKIE_NAME = "KOLKOKRZYZYK";
	const RESET_PARAM = "reset";
	const EMPTY_MARK = " ";
	
	const RESULT_DRAW = "REMIS";
	
	$WIN_COMBINATIONS = array(
		array(0, 1, 2),
		array(3, 4, 5),
		array(6, 7, 8),
			
		array(0, 3, 6),
		array(1, 4, 7),
		array(2, 5, 8),
			
		array(0, 4, 8),
		array(2, 4, 6),
	);
	
	$nowaGra = isset($_GET[RESET_PARAM]);
	$graWToku = true;
	$ktoWygral = null;
	
	// wczytaj plansze
	$plansza = array();
	if(!$nowaGra && isset($_COOKIE[COOKIE_NAME]) && strlen($_COOKIE[COOKIE_NAME]) == 17) {
		$plansza = explode(";", $_COOKIE[COOKIE_NAME]);
	} else {
		$plansza[0] = EMPTY_MARK;
		$plansza[1] = EMPTY_MARK;
		$plansza[2] = EMPTY_MARK;
		$plansza[3] = EMPTY_MARK;
		$plansza[4] = EMPTY_MARK;
		$plansza[5] = EMPTY_MARK;
		$plansza[6] = EMPTY_MARK;
		$plansza[7] = EMPTY_MARK;
		$plansza[8] = EMPTY_MARK;
	}
	
	// kto sie rusza
	$licznik = array(X_MARK => 0, Y_MARK => 0, EMPTY_MARK => 0);
	for($i = 0; $i < 9; ++$i) {
		++$licznik[$plansza[$i]];
	}
	
	$czyjRuch = $licznik[X_MARK] <= $licznik[Y_MARK] ? X_MARK : Y_MARK;
	
	// wykonaj ruch
	for($i = 0; $i < 9; ++$i) {
		if (isset($_GET[$i]) && $plansza[$i] == EMPTY_MARK) {
			$plansza[$i] = $czyjRuch;
			break;
		}
	}
	setcookie(COOKIE_NAME, implode(";", $plansza), 0);

	// kto sie rusza nastepny
	$licznik2 = array(X_MARK => 0, Y_MARK => 0, EMPTY_MARK => 0);
	for($i = 0; $i < 9; ++$i) {
		++$licznik2[$plansza[$i]];
	}
	
	$nastepnyRuch = $licznik2[X_MARK] <= $licznik2[Y_MARK] ? X_MARK : Y_MARK;
	
	// sprawdz czy gra sie skonczyla (remis)
	if($licznik2[EMPTY_MARK] == 0) {
		$graWToku = false;
		$ktoWygral = RESULT_DRAW;
	}
	
	// sprawdz czy gra sie skonczyla (wygrana)
	foreach($WIN_COMBINATIONS as $combination) {
		$sign = $plansza[$combination[0]];
		
		$wykrytoInnyZnak = false;
		foreach($combination as $index) {
			if($sign != $plansza[$index]) {
				$wykrytoInnyZnak = true;
				break;
			}
		}
		
		if($sign == EMPTY_MARK) {
			continue;
		}
		
		if (!$wykrytoInnyZnak) {
			$graWToku = false;
			$ktoWygral = $sign;
			break;
		}
	}
	
	if($graWToku) {
		include "view/plansza.phtml";
	} else {
		include "view/wygrana.phtml";
	}